This invention relates generally to digital computing systems and specifically to mutiprocessing systems using distributed resources for management of input and output functions.
Multiprocessor systems have arisen as the need for computing power has outstripped the evolution of single-processor computers. Multiprocessors are characterized by a number of processing units communicating with one another to solve a common problem or to solve diverse problems simultaneously.
One common limitation of multiprocessing systems is the manner in which communication between processors, or communication between a processor and a peripheral device (e.g., a disk storage array) is made. In systems where a large number of processors have frequent need for such communications, it becomes impractical for such communications to take place over a single bus fully controlled by a central computer.
Thus, prior known attempts have used multiple buses or distributed bus control among the processors of a multiprocessing system to reduce such loading. One recent example of such a system is disclosed in U.S. Pat. No. 5,123,094 to MacDougal. In the system taught by MacDougal, shared memory for each processor of a multiprocessor system is organized into pages, and each such page is owned by one of the processors. Therefore, each processor in an n-processor system reserves n-1 pages in of memory for outgoing messages to other processors and reserves 1 page for incoming messages from other processors.
Another system, disclosed in U.S. Pat. No. 5,050,072 to Earnshaw et al., uses a semaphore memory in each processor to keep track of whether a bus is available for use by any of the processors.
None of the known solutions adequately addresses the problem of reducing loading on the processor to which peripheral devices such as a disk storage array or a sound generating device are connected. Nor does any known solution provide a workable scheme for virtualizing a portion of a disk array as hard disk dedicated for use by a particular processor of the multiprocessing system, without regard to whether the virtualized portion is made up of contiguous disk sectors. Furthermore, the prior art techniques are not understood to provide a simple, effective, and memory-efficient manner of transferring data and commands from one processor to another without unduly disrupting the operation of the processors involved or any other processors. Finally, no known multiprocessing system provides an acceptable solution for accommodating conventional network services over a high-speed computer bus.